Creating computer content and other applications, including desktop applications, Web pages, and rich Internet applications, generally involves separate stages and often involves two or more sets of people with very different skill sets. Generally, designers generate images of an application's appearance, for example, using a drawing program like Adobe® Photoshop®, and separately write specifications of how they want the application to behave, for example, when the user moves the mouse over a given part of the screen. Developers then take the images and specifications and develop a working application, generally by manually coding such an application. This two-stage design-development process can be inefficient and inaccurate. Discrepancies often require additional iterations of the design-development process and, thus, additional effort by both designer and developer. The use of declarative languages, platforms like Adobe's® Flex® platform, and other technologies have helped reduce the gap in the design and development process. However, inefficiencies and inaccuracies remain.
Developing software applications frequently involves creating and managing development projects having multiple source code files. In the context of an integrated development environment (“IDE”), application creators typically must keep track of these individual files and develop the application based on their understanding of how the files relate to each other. Because each file typically has its own editor window for editing, developer actions such as undo and redo can be limited to the context of the individual file being edited. Developers also frequently use granular source control systems that require manual steps to manage versioning for individual files so that if two developers make changes to the same file, there is a process for merging the changes.
Unlike developers, designers typically create graphics, interfaces, and other visual and appearance attributes using software applications that present the material being developed as a single document file. For designers, edits to anything in the entire project are viewed as edits to that one document file. User actions, such as, for example, undo commands, redo commands, and save commands, function globally with respect to the entire project rather than operating on a single portion of a project. Thus, many designers are accustomed to working with a user interface that presents individual components as if such components where all part of the same document or file.
The different environments that designers and developers are accustomed to working in presents various hurdles in collaborative development. Designers are unaccustomed to working within multi-source-file projects and managing versioning, source control workflows, granular file merges, and merging code. Designers therefore tend to contribute indirectly by submitting ideas and graphics to a developer who then has to implement the ideas and graphics in the project. Existing development applications thus fail to adequately facilitate collaboration between designers and developers in certain ways.